package controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import java.util.Date;
import java.io.OutputStream;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

/**
 * Servlet implementation class ABCServlet
 */
@WebServlet("/ABCServlet")
@MultipartConfig
public class ABCServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public ABCServlet() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Servlet#init(ServletConfig)
	 */
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Servlet#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    // 设置请求编码格式
	    request.setCharacterEncoding("UTF-8");
	    // 设置响应编码格式
	    response.setContentType("text/html;charset=UTF-8");
	    // 获取请求参数
	    String name = request.getParameter("name");
	    // 获取响应输出流
		response.getWriter().append("<h1>你好！" + name + "</h1>");
	    // 获取多个同名参数
	    String[] hobbies = request.getParameterValues("hobby");
	    if (hobbies != null) {
	        response.getWriter().append("<h2>爱好：</h2>");
	        response.getWriter().append("<ul>");
	        for (String hobby : hobbies) {
	            response.getWriter().append("<li>" + hobby + "</li>");
	        }
	        response.getWriter().append("</ul>");
	    }
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	     
		 // 设置请求编码格式
	        request.setCharacterEncoding("UTF-8");
	        // 设置响应编码格式
	        response.setContentType("image/jpeg");
	        // 获取响应输出流
	        OutputStream out = response.getOutputStream();
	        // 生成二进制数据
	        byte[] data = new byte[1024];
	        out.write(data);
		 
		    // 设置请求编码格式
		    request.setCharacterEncoding("UTF-8");
		    // 设置响应编码格式
		    response.setContentType("text/html;charset=UTF-8");
		    // 手动设置响应头
		    response.setHeader("Content-Type", "text/html;charset=UTF-8");      // 设置响应数据的类型和编码格式
		    response.setHeader("Content-Length", "1024");                       // 设置响应数据的长度
		    response.setHeader("Content-Encoding", "gzip");                     // 设置响应数据的编码格式
		    response.setHeader("Content-Language", "zh-CN");                    // 设置响应数据的语言
		    response.setHeader("Transfer-Encoding", "chunked");                 // 设置响应数据的传输编码
		    response.setHeader("Location", "http://www.baidu.com");             // 设置响应数据的重定向地址
		    response.setHeader("Refresh", "5");                                 // 设置响应数据的刷新时间
		    response.setHeader("Set-Cookie", "name=abc");                       // 设置响应数据的 Cookie 信息
		    response.setHeader("Expires", "Thu, 01 Dec 2022 16:00:00 GMT");     // 设置响应数据的过期时间
		    response.setHeader("Cache-Control", "no-cache");                    // 设置响应数据的缓存策略
		    response.setHeader("Pragma", "no-cache");                           // 设置响应数据的缓存策略
		    response.setHeader("Connection", "keep-alive");                     // 设置响应数据的连接类型
		    response.setHeader("Date", new Date().toString());                  // 设置响应数据的日期
		    response.setHeader("Server", "Apache");                             // 设置响应数据的服务器类型

		    // 获取响应输出流
		    PrintWriter writer = response.getWriter();
		    // 生成HTML代码
		    writer.append("<!DOCTYPE html>")
		            .append("<html>")
		            .append("<head>")
		            .append("<title>HTTP响应</title>")
		            .append("</head>")
		            .append("<body>")
		            .append("<h1>HTTP响应</h1>")
		            .append("</body>")
		            .append("</html>");
		 
		 // 设置请求编码格式
	     request.setCharacterEncoding("UTF-8");
	     // 设置响应编码格式
	     response.setContentType("text/html;charset=UTF-8");
	     // 获取请求参数
	     String name = request.getParameter("name");
	     // 获取响应输出流
	     response.getWriter().append("<h1>你好！" + name + "</h1>");
	     // 获取多个同名参数
	     String[] hobbies = request.getParameterValues("hobby");
	     if (hobbies != null) {
	         response.getWriter().append("<h2>爱好：</h2>");
	         response.getWriter().append("<ul>");
	         for (String hobby : hobbies) {
	             response.getWriter().append("<li>" + hobby + "</li>");
	         }
	         response.getWriter().append("</ul>");
	     }
	     // 设置上传文件的保存路径
	     String uploadPath = "H:\\WangGong\\Ciallo\\post\\resources\\";
	     // 获取上传的文件
	     Collection<Part> parts = request.getParts();
	     response.getWriter().append("<h2>上传的文件有：</h2>");
	     for (Part part : parts) {
	         // 获取上传文件的文件名
	         String fileName = part.getSubmittedFileName();
	         // 确保文件存在
	         if (fileName != null && !fileName.isEmpty()) {
	             // 将文件写入到指定路径
	             part.write(uploadPath + fileName);
	             part.delete();

	             // 返回上传文件成功的信息
	             response.getWriter().append("<p>" + fileName + "</p>");
	         }
	     }
	 }

}
